<?php
/**
 * Created by PhpStorm.
 * User: xeng
 * Date: 2018/1/5
 * Time: 15:11
 */
namespace Home\Model;
use Think\Model;

class PowerModel extends Model{
    protected $_validate = array();
    protected $_auto = array();

    public function getAuthAndMenuByIds($auth_ids){// 4,4,6,5
        $data_array = array();// 准备的数据仓库
        $auth_ids_array  = explode(',',$auth_ids);// 将字符串 修改为 数组
        $auth_ids_array = array_unique($auth_ids_array);//去重复
        foreach($auth_ids_array as $k => $v){
            $tmp =$this->field('menu,rule')->find($v);// 获取 对应的 menu rule 字段
            //dump($tmp);
            if($tmp['menu']){// 去掉空白的菜单
                $data_array['menu'][] = $tmp['menu'];// 存入菜单仓库
            }
            $data_array['auth'][] = $tmp['rule'];// 存入 权限仓库
        }
        return $data_array;// 返回数据
    }

	public function getPowerById(){
        $url = __SELF__;// 当前URL 自己
        $nav_all = D('power')->order('id')->select();//获取全部菜单
        $where = "id=".$_SESSION['ltq_user']['id'];
        $user_nav = D('admin')->where($where)->getField("power");//获取用户权限菜单（$_ssession['user_id']）
        if($user_nav!=='all'){ //不是超级管理员
            $user_nav=ltrim($user_nav);
            $user_nav = explode(',',$user_nav);//dump($user_nav);
            foreach ($user_nav as $v){ //比对 获取用户菜单
//            echo $v."---->";
                if($v)
//                echo count($nav_all)."----";
                    for($i=0;$i<count($nav_all);$i++){
                        // echo $nav_all[$i]['id'];

                        if($v == $nav_all[$i]['id'])
                            $nav[]=$nav_all[$i];
                    };
            }
        }
        if($user_nav == "all"){//超级管理员
            $nav=$nav_all;
        }
//        dump($nav);

        //调整为菜单 对应的数组（最多3维数组）
        $ignore_array = $this->adjustNav($nav);

//       dump($ignore_array) ; die;//最终 用户 权限菜单 数组

        $auth = $_SESSION['ltq_user']['auth'];// 授权权限范围
        if(in_array($url,$ignore_array)){// 忽略范围内直接返回
            return true;
        }
        if($auth=='all'){$ignore_array=$nav_all;}// 如果拥有全部权限 此话 可以不写
        return $ignore_array;
        if( is_array($auth) && !in_array($url,$auth) ){// 开启权限验证，并且 不在范围内
            $this->error("你没有权限");
        }
    }


    public function  adjustNav($nav,$ignore_array='') //调整为菜单 对应的数组（最多3维数组）
    {
        $y=0;   // 1级菜单容器
        $r=0; //2 级菜单容器
        foreach ($nav as &$v) {
            if($v["mgr"] == "0"){ //获取一级菜单
                $ignore_array[]=$v;
            }
            if($ignore_array[$y]){ //获取二级菜单
                for($i=0;$i<count($nav);$i++){
                    if($ignore_array[$y]["id"]==$nav[$i]["mgr"]){
                        $ignore_array[$y]["child"][$r]=$nav[$i];
                        $r++;
                    }
                }
            }
            $y++;
        }
        foreach ($ignore_array as $v){
            foreach ($v as $u){
                if($u['id']==0){
                    $u['child']='';
                }
            }
        }
        sort($ignore_array); //数组排序
        return $ignore_array;
    }


}